//
//  MJTStatusListViewModel.swift
//  swiftWeiBo
//
//  Created by MJT on 16/7/13.
//  Copyright © 2016年 MJT. All rights reserved.
//

import UIKit

class MJTStatusListViewModel: NSObject {
    //  微博数据源
    lazy var statusList: [MJTStatusViewModel] = [MJTStatusViewModel]()
    //加载微博数据
    func loadStatus(isPullUp: Bool, callBack:(isSuccess: Bool,message: String) -> ()) {
        // 上拉加载默认值 0
        var maxId: Int64 = 0
        var sinceId: Int64 = 0
        if isPullUp {
            // 获取数组里面最后一个微博元素的id 
            maxId = statusList.last?.status?.id ?? 0
            //wield防止重复数据,我们堆区微博id 减一
            if maxId > 0 {
                maxId -= 1
            }
        } else {
            // 获取数组里面的第一个微博元素的微博id 
            sinceId = statusList.first?.status?.id ?? 0
        }
        var message = "没有加载到微博数据"
        MJTNetworkTools.sharedTools.loadStatus(maxId, sinceId: sinceId){(response, error) -> () in
            if error != nil {
                print(error)
                callBack(isSuccess: false, message: message)
                return
            }
            //代码执行到此,是成功的回调
            guard let dic = response as? [String: AnyObject] else {
                print("不是正确的字典格式")
                callBack(isSuccess: false, message: message)
                return
            }
            //代码到此 是个正确的字典
            guard let statusDicArray = dic["statuses"] as? [[String: AnyObject]] else {
                print("不是一个正确的字典格式")
                callBack(isSuccess: false, message: message)
                return
            }
            //遍历数组完成字典转模型
            var temparray = [MJTStatusViewModel]()
            for statusDic in statusDicArray {
                let status = MJTStatus(dic: statusDic)
                //初始化ViewModel通过微博模型
                let statusViewModel = MJTStatusViewModel(status: status)
                temparray.append(statusViewModel)

            }
            //设置数据
//            self.statusList.appendContentsOf(temparray)
            //追加数据
            if isPullUp {
                //上拉加载更多
                self.statusList.appendContentsOf(temparray)
            } else {
                //下来刷新,最新数据在前面
//                self.statusList = temparray + self.statusList
                self.statusList.insertContentsOf(temparray, at: 0)
            }
            if temparray.count > 0 {
                message = "加载了\(temparray.count)条微博数据"
            }
            //刷新数据
            callBack(isSuccess: true, message: message)

        }
    }
}
